name: PR checks

on:
    push:
        branches: [ "main", "develop" ]
    pull_request:

env:
    commonGradleFlags: --parallel --stacktrace --no-configuration-cache --no-daemon
    detektReportPath: ./build/reports/detekt/detekt.xml
    reviewdogSetup: -f=checkstyle -name="detekt" -level=error -filter-mode=added

jobs:
    pr-checks:
        runs-on: ubuntu-latest
        steps:
            -   name: Checkout
                uses: actions/checkout@v3

            -   name: Cleanup Github-Actions bot comments
                continue-on-error: true
                run: |
                    sh ./ci/github_comments_cleanup.sh "${{ github.repository_owner }}" "${{ github.event.repository.name }}" "${{ github.event.number }}" "github-actions[bot]" "${{ secrets.GITHUB_TOKEN }}"

            -   name: Setup Reviewdog
                uses: reviewdog/action-setup@v1
                with:
                    reviewdog_version: latest

            -   name: Setup JDK 17 for build
                uses: actions/setup-java@v3
                with:
                    java-version: '17'
                    distribution: 'temurin'
                    cache: gradle

            -   name: Grant execute permission for gradlew
                run: chmod +x gradlew

            -   name: Run detekt
                run: ./gradlew detektAll $commonGradleFlags

            -   name: Run Reviewdog for Detekt as Github Review
                env:
                    REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                run: |
                    reviewdog $reviewdogSetup -reporter=github-pr-review <$detektReportPath

            -   name: Run Reviewdog for Detekt as Github CHECK
                env:
                    REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                run: |
                    reviewdog $reviewdogSetup -reporter=github-pr-check <$detektReportPath

    assemble:
        runs-on: ubuntu-latest
        steps:
            -   name: Checkout
                uses: actions/checkout@v3

            -   name: Setup JDK 17 for build
                uses: actions/setup-java@v3
                with:
                    java-version: '17'
                    distribution: 'temurin'
                    cache: gradle

            -   name: Grant execute permission for gradlew
                run: chmod +x gradlew

            -   name: Setup environment
                env:
                    GH_HH_ACCESS_TOKEN: ${{ secrets.GH_HH_ACCESS_TOKEN }}
                run: |
                    sh ci/setup_env.sh

            -   name: Assemble app
                run: ./gradlew :app:assembleDebug $commonGradleFlags

            -   name: Archive production artifacts
                uses: actions/upload-artifact@v3
                with:
                    name: app-debug.apk
                    path: app/build/outputs/apk/debug/app-debug.apk
